
char* pushDominoes(char *dominoes) {
    int len = strlen(dominoes);
    char *p = dominoes;
    char *pE = dominoes + len - 1;
    char *pL = NULL;
    char *pR = NULL;

    while (*p) {
        if (*p == '.' && p != pE) {
            p++;
        } else {
            pR = p;

            if (pL == NULL && *pR == '.') {
                ;
            } else if (pL == NULL && *pR == 'L') {
                memset(dominoes, 'L', pR - dominoes);
            } else if (pL == NULL && *pR == 'R') {
                ;
            } else if (*pL == 'L' && *pR == '.') {
                break;
            } else if (*pL == 'R' && *pR == '.') {
                memset(pL, 'R', dominoes + len - pL);
            } else if (*pL == 'L' && *pR == 'L') {
                memset(pL, 'L', pR - pL);
            } else if (*pL == 'L' && *pR == 'R') {
                ;
            } else if (*pL == 'R' && *pR == 'L') {
                int shLen = (pR - pL + 1) / 2;
                memset(pL, 'R', shLen);
                memset(pR + 1 - shLen, 'L', shLen);
            } else if (*pL == 'R' && *pR == 'R') {
                memset(pL, 'R', pR - pL);
            }

            pL = p++;
        }
    }

    return dominoes;
}
